/**
 * chatGpt
 这段代码首先定义了一个 calculateMaxProfit 函数，它接受地块列表和油量作为参数。
 函数内部首先去除重复的地块并按耗油量排序，然后初始化一个动态规划数组 dp。
 接下来，它使用两层循环来填充 dp 数组，最后返回 dp[oil] 作为最大收益。
JavaScript 使用 Math.max 函数来找到两个或多个数值中的最大值。
在调用 calculateMaxProfit 函数后，程序将输出在油量为 10 的情况下的最大收益
 */

/**
 *  1 优点 ai生成的代码更加简洁，使用双重循环，加上if语句 逻辑清晰
 *  2 缺点 去重有误
 *  3 提升思路，可以根据ui 给的建议来简化代码，同时也要自己验证代码的正确性
 */

function calculateMaxProfit(plots, oil) {
  // 去除重复地块并按耗油量排序
  let sortedPlots = Array.from(new Set(plots)).sort((a, b) => a[0] - b[0]);

  // 初始化动态规划数组
  let dp = new Array(oil + 1).fill(0);

  // 动态规划计算最大收益
  for (let i = 1; i <= oil; i++) {
    for (let plot of sortedPlots) {
      let [oilRequired, profit] = plot;
      if (oilRequired <= i) {
        dp[i] = Math.max(dp[i], dp[i - oilRequired] + profit);
      }
    }
  }

  // 返回最大收益
  return dp[oil];
}

// 地块列表
let plots = [[1,1], [7, 9], [6, 10], [2, 4], [3, 5], [6, 10]];
// 给定油量
let oil = 10;

// 计算最大收益
let maxProfit = calculateMaxProfit(plots, oil);
console.log(`在油量为 ${oil} 的情况下，最大收益为: ${maxProfit}`);